package principal;

import java.io.*;
import java.util.ArrayList;

public class Main {
	
	public static void mostrarResultados (ArrayList<Persona> casados){
		
		System.out.println("\nLos Resultados son: \n");
		for (int i=0; i<casados.size(); i++){
			if (casados.get(i).estaSoltero()) System.out.println("Esta Soltero");
			else System.out.println(casados.get(i).getNombre()+" casado con "+casados.get(i).getPrometido().getNombre());
		}
	}
	
	public static String leerEntrada() {
		String salida = "";
		try{
			System.out.println("Escriba el nombre del archivo:");
			BufferedReader leerEntrada = new BufferedReader(new InputStreamReader(System.in));
			salida = leerEntrada.readLine();
			
		} catch( IOException e) {
		
			System.err.println("Error: " + e.getMessage());
		}
		return salida;
		}
	
	public static void main(String[] args) throws Exception {
		
		String ruta; //la ruta del archivo a cargar
		
		if (args.length>0) ruta=args[0]; // cargar el archivo por linea de comando
		else ruta= leerEntrada(); // alternativa para cargar el archivo
		
		//Cargar el archivo y los datos del mismo
		
		Archivo datos= new Archivo(ruta);
		datos.CargarDatos();
		
		Casamiento agencia= new Casamiento(datos.getHombres(),datos.getMujeres(),datos.getPreferencias());
		ArrayList<Persona> solucionBT= agencia.declararBT();
		ArrayList<Persona> solucionGS= agencia.declararGS();
				
		System.out.println("\nBacktracking");
		mostrarResultados(solucionBT);
				
		System.out.println("\nGale-Shapley");
		mostrarResultados(solucionGS);

	}

}
